import request from '@/utils/request'

/**
 * 查询图书列表
 * @param {Object} query - 查询参数
 * @param {number} query.pageNum - 页码
 * @param {number} query.pageSize - 每页数量
 * @param {string} [query.name] - 书名
 * @param {string} [query.author] - 作者
 * @param {string} [query.outProductId] - ISBN编号
 * @param {number} [query.categoryId] - 分类ID
 * @param {number} [query.publishStatus] - 上架状态(0-下架 1-上架)
 * @returns {Promise} 返回图书列表数据
 */
export function listBook(query) {
  return request({
    url: '/merchant/book/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取图书详细信息（无需权限）
 * @param {number} id - 图书ID
 * @returns {Promise} 返回图书详细信息
 */
export function getBook(id) {
  return request({
    url: '/merchant/book/front/' + id,
    method: 'get'
  })
}

/**
 * 新增图书
 * @param {Object} data - 图书信息
 * @returns {Promise} 返回操作结果
 */
export function addBook(data) {
  return request({
    url: '/merchant/book',
    method: 'post',
    data: data
  })
}

/**
 * 修改图书信息
 * @param {Object} data - 图书信息
 * @returns {Promise} 返回操作结果
 */
export function updateBook(data) {
  return request({
    url: '/merchant/book',
    method: 'put',
    data: data
  })
}

/**
 * 删除图书
 * @param {number|number[]} id - 图书ID或ID数组
 * @returns {Promise} 返回操作结果
 */
export function delBook(id) {
  return request({
    url: '/merchant/book/' + id,
    method: 'delete'
  })
}

/**
 * 修改图书上下架状态
 * @param {number} id - 图书ID
 * @param {number} status - 上架状态(0-下架 1-上架)
 * @returns {Promise} 返回操作结果
 */
export function changeBookStatus(id, status) {
  const data = {
    id,
    publishStatus: status
  }
  return request({
    url: '/merchant/book/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 批量修改图书上下架状态
 * @param {number[]} ids - 图书ID数组
 * @param {number} status - 上架状态(0-下架 1-上架)
 * @returns {Promise} 返回操作结果
 */
export function batchChangeBookStatus(ids, status) {
  const data = {
    ids,
    publishStatus: status
  }
  return request({
    url: '/merchant/book/batchChangeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 导出图书数据
 * @param {Object} query - 查询参数，与listBook相同
 * @returns {Promise} 返回文件流
 */
export function exportBook(query) {
  return request({
    url: '/merchant/book/export',
    method: 'get',
    params: query,
    responseType: 'blob'
  })
}

/**
 * 前台查询图书列表
 * @param {Object} query - 查询参数
 * @returns {Promise} 返回图书列表数据
 */
export function frontListBook(query) {
  return request({
    url: '/merchant/book/front/list',
    method: 'get',
    params: query
  })
}

/**
 * 前台获取图书详细信息
 * @param {number} id - 图书ID
 * @returns {Promise} 返回图书详细信息
 */
export function frontGetBook(id) {
  return request({
    url: '/merchant/book/front/' + id,
    method: 'get'
  })
}
